<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.11.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>cppMISC: wheels::fsm2&lt; statType, dataType, realT &gt; 模板类 参考</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<script type="text/javascript" src="../../clipboard.js"></script>
<link href="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../cookie.js"></script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/searchdata.js"></script>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript" src="../../darkmode_toggle.js"></script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr id="projectrow">
  <td id="projectalign">
   <div id="projectname">cppMISC<span id="projectnumber">&#160;v1.1</span>
   </div>
   <div id="projectbrief">cppMisc 文档系统</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- 制作者 Doxygen 1.11.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(1); });
/* @license-end */
</script>
<script type="text/javascript" src="../../menudata.js"></script>
<script type="text/javascript" src="../../menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
  initMenu('../../',true,false,'search.php','搜索',false);
  $(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){ initResizable(false); });
/* @license-end */
</script>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">载入中...</div>
<div class="SRStatus" id="Searching">搜索中...</div>
<div class="SRStatus" id="NoMatches">未找到</div>
</div>
</div>
</div>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="../../df/d8d/namespacewheels.html">wheels</a></li><li class="navelem"><a class="el" href="../../d4/d5b/classwheels_1_1fsm2.html">fsm2</a></li>  </ul>
</div>
</div><!-- top -->
<div id="doc-content">
<div class="header">
  <div class="summary">
<a href="#nested-classes">类</a> &#124;
<a href="#pub-types">Public 类型</a> &#124;
<a href="#pub-methods">Public 成员函数</a> &#124;
<a href="#pub-static-methods">静态 Public 成员函数</a> &#124;
<a href="../../d2/d90/classwheels_1_1fsm2-members.html">所有成员列表</a>  </div>
  <div class="headertitle"><div class="title">wheels::fsm2&lt; statType, dataType, realT &gt; 模板类 参考</div></div>
</div><!--header-->
<div class="contents">

<p>状态机定义， 这个状态机不支持子状态模式  
 <a href="#details">更多...</a></p>

<p><code>#include &lt;<a class="el" href="../../d4/d64/fsm2_8hpp_source.html">fsm2.hpp</a>&gt;</code></p>
<div class="dynheader">
类 wheels::fsm2&lt; statType, dataType, realT &gt; 继承关系图:</div>
<div class="dyncontent">
<div class="center"><img src="../../dd/db9/classwheels_1_1fsm2__inherit__graph.png" border="0" usemap="#awheels_1_1fsm2_3_01stat_type_00_01data_type_00_01real_t_01_4_inherit__map" alt="Inheritance graph"/></div>
<map name="awheels_1_1fsm2_3_01stat_type_00_01data_type_00_01real_t_01_4_inherit__map" id="awheels_1_1fsm2_3_01stat_type_00_01data_type_00_01real_t_01_4_inherit__map">
<area shape="rect" title="状态机定义， 这个状态机不支持子状态模式" alt="" coords="5,123,200,699"/>
<area shape="rect" href="../../d3/dc3/structwheels_1_1base____.html" title="方便继承或者特化后能够使用一个指针，定义一个基础空类" alt="" coords="51,5,155,75"/>
<area shape="poly" title=" " alt="" coords="105,90,105,123,100,123,100,90"/>
</map>
</div>
<div class="dynheader">
wheels::fsm2&lt; statType, dataType, realT &gt; 的协作图:</div>
<div class="dyncontent">
<div class="center"><img src="../../d3/d0a/classwheels_1_1fsm2__coll__graph.png" border="0" usemap="#awheels_1_1fsm2_3_01stat_type_00_01data_type_00_01real_t_01_4_coll__map" alt="Collaboration graph"/></div>
<map name="awheels_1_1fsm2_3_01stat_type_00_01data_type_00_01real_t_01_4_coll__map" id="awheels_1_1fsm2_3_01stat_type_00_01data_type_00_01real_t_01_4_coll__map">
<area shape="rect" title="状态机定义， 这个状态机不支持子状态模式" alt="" coords="5,123,200,699"/>
<area shape="rect" href="../../d3/dc3/structwheels_1_1base____.html" title="方便继承或者特化后能够使用一个指针，定义一个基础空类" alt="" coords="51,5,155,75"/>
<area shape="poly" title=" " alt="" coords="105,90,105,123,100,123,100,90"/>
</map>
</div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
类</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dc/dd4/structwheels_1_1fsm2_1_1state.html">state</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">定义状态  <a href="../../dc/dd4/structwheels_1_1fsm2_1_1state.html#details">更多...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/dfa/structwheels_1_1fsm2_1_1st_data_item.html">stDataItem</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dd7/structwheels_1_1fsm2_1_1trans.html">trans</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/d2c/structwheels_1_1fsm2_1_1trans_key_type.html">transKeyType</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-types" name="pub-types"></a>
Public 类型</h2></td></tr>
<tr class="memitem:a7c18cb1a59bc68fc99510ea160761a66" id="r_a7c18cb1a59bc68fc99510ea160761a66"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a7c18cb1a59bc68fc99510ea160761a66">emType</a> { <a class="el" href="#a7c18cb1a59bc68fc99510ea160761a66a9425a2213fdac5735fffac99e2d23f1d">START</a>
, <a class="el" href="#a7c18cb1a59bc68fc99510ea160761a66ada521840dc89a1b58d60594a1ab5efd5">END</a>
, <a class="el" href="#a7c18cb1a59bc68fc99510ea160761a66a660f1168057f566eef7b28e525086fd1">NORMAL</a>
 }</td></tr>
<tr class="separator:a7c18cb1a59bc68fc99510ea160761a66"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa151bc878f6634b12d0e48329ed36815" id="r_aa151bc878f6634b12d0e48329ed36815"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aa151bc878f6634b12d0e48329ed36815">emErrCode</a> { <br />
&#160;&#160;<a class="el" href="#aa151bc878f6634b12d0e48329ed36815a9cb635b25ac5505ea1d750e394bd6ded">ERR_ALLOC_MEM</a>
, <a class="el" href="#aa151bc878f6634b12d0e48329ed36815a4e5696aa3658e8f1fd96523304280229">ERR_STAT_ID_EMPTY</a>
, <a class="el" href="#aa151bc878f6634b12d0e48329ed36815ab96bc5057558a490e6af385129653af8">ERR_STAT_EXIST</a>
, <a class="el" href="#aa151bc878f6634b12d0e48329ed36815ae0bd920d1a633a8c8fc1b8f651d0bd1e">ERR_FSM_NOT_START</a>
, <br />
&#160;&#160;<a class="el" href="#aa151bc878f6634b12d0e48329ed36815a79e5e3b349b279ad18d0721fef9f4c68">ERR_STAT_NOT_DEFINED</a>
, <a class="el" href="#aa151bc878f6634b12d0e48329ed36815a9321e17214abc743a379052c1f3d292d">ERR_STAT_FINISHED</a>
, <a class="el" href="#aa151bc878f6634b12d0e48329ed36815abe0e48838159bd7cc524f8759a290a5e">ERR_STAT_OBJECT_NULL</a>
, <a class="el" href="#aa151bc878f6634b12d0e48329ed36815a6a645ab20bf8184383a455fb329c71ec">ERR_CAN_NOT_FIND_STAT</a>
, <br />
&#160;&#160;<a class="el" href="#aa151bc878f6634b12d0e48329ed36815ab667df5f09eb6dcd1fceb64426c1f0de">OK</a>
<br />
 }</td></tr>
<tr class="separator:aa151bc878f6634b12d0e48329ed36815"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac228e16d2c267a05f619c3ab31b944a2" id="r_ac228e16d2c267a05f619c3ab31b944a2"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ac228e16d2c267a05f619c3ab31b944a2">enterFun_t</a> = std::function&lt; bool ( const statType&amp; , const <a class="el" href="../../d4/dfa/structwheels_1_1fsm2_1_1st_data_item.html">stDataItem</a>&amp; ) &gt;</td></tr>
<tr class="memdesc:ac228e16d2c267a05f619c3ab31b944a2"><td class="mdescLeft">&#160;</td><td class="mdescRight">进入状态处理函数。函数原型为：bool cbFun( const std::string&amp; id , const stDataItem&amp; data );  <br /></td></tr>
<tr class="separator:ac228e16d2c267a05f619c3ab31b944a2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae9a65cbfced3703367ae5a8a4cd2028e" id="r_ae9a65cbfced3703367ae5a8a4cd2028e"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ae9a65cbfced3703367ae5a8a4cd2028e">leaveFun_t</a> = std::function&lt; statType ( const statType&amp; , const <a class="el" href="../../d4/dfa/structwheels_1_1fsm2_1_1st_data_item.html">stDataItem</a>&amp; ) &gt;</td></tr>
<tr class="memdesc:ae9a65cbfced3703367ae5a8a4cd2028e"><td class="mdescLeft">&#160;</td><td class="mdescRight">离开状态转换函数。函数原型为 std::string cbFun( const std::string&amp; id , const stDataItem&amp; data );  <br /></td></tr>
<tr class="separator:ae9a65cbfced3703367ae5a8a4cd2028e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a91085e365743f12172ad70b54c8c6a0f" id="r_a91085e365743f12172ad70b54c8c6a0f"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a91085e365743f12172ad70b54c8c6a0f">raiseFun_t</a> = std::function&lt; void ( const statType&amp; , const statType&amp; , const <a class="el" href="../../d4/dfa/structwheels_1_1fsm2_1_1st_data_item.html">stDataItem</a>&amp; ) &gt;</td></tr>
<tr class="memdesc:a91085e365743f12172ad70b54c8c6a0f"><td class="mdescLeft">&#160;</td><td class="mdescRight">发生转换的时候调用这个函数  <br /></td></tr>
<tr class="separator:a91085e365743f12172ad70b54c8c6a0f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a960dc87c085dcf7042729475a031b956" id="r_a960dc87c085dcf7042729475a031b956"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a960dc87c085dcf7042729475a031b956">transTbl_t</a> = std::map&lt; <a class="el" href="../../d0/d2c/structwheels_1_1fsm2_1_1trans_key_type.html">transKeyType</a> , <a class="el" href="../../da/dd7/structwheels_1_1fsm2_1_1trans.html">trans</a>* &gt;</td></tr>
<tr class="separator:a960dc87c085dcf7042729475a031b956"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a82b0870134b63c704c9b4057ee472c36" id="r_a82b0870134b63c704c9b4057ee472c36"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a82b0870134b63c704c9b4057ee472c36">statTbl_t</a> = std::map&lt; statType , <a class="el" href="../../dc/dd4/structwheels_1_1fsm2_1_1state.html">state</a> * &gt;</td></tr>
<tr class="separator:a82b0870134b63c704c9b4057ee472c36"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public 成员函数</h2></td></tr>
<tr class="memitem:a5528607078dc10cbcd4f063a8ea305eb" id="r_a5528607078dc10cbcd4f063a8ea305eb"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a5528607078dc10cbcd4f063a8ea305eb">fsm2</a> ()</td></tr>
<tr class="separator:a5528607078dc10cbcd4f063a8ea305eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a912a2c4483c2fa1340ba2a62049e696f" id="r_a912a2c4483c2fa1340ba2a62049e696f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a912a2c4483c2fa1340ba2a62049e696f">fsm2</a> (const statType &amp;<a class="el" href="#a84be5fdd369b09a7c823062b2690d61d">start</a>, <a class="el" href="#ac228e16d2c267a05f619c3ab31b944a2">enterFun_t</a> entfun)</td></tr>
<tr class="memdesc:a912a2c4483c2fa1340ba2a62049e696f"><td class="mdescLeft">&#160;</td><td class="mdescRight">创建状态机对象。同时初始化相关回调函数  <br /></td></tr>
<tr class="separator:a912a2c4483c2fa1340ba2a62049e696f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa95915defa78358c2a1272647279af40" id="r_aa95915defa78358c2a1272647279af40"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aa95915defa78358c2a1272647279af40">fsm2</a> (const statType &amp;<a class="el" href="#a84be5fdd369b09a7c823062b2690d61d">start</a>, <a class="el" href="#ac228e16d2c267a05f619c3ab31b944a2">enterFun_t</a> entfun, <a class="el" href="#ae9a65cbfced3703367ae5a8a4cd2028e">leaveFun_t</a> leavefun)</td></tr>
<tr class="separator:aa95915defa78358c2a1272647279af40"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a982397accd0aaf3aaee87fd6b3248c22" id="r_a982397accd0aaf3aaee87fd6b3248c22"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a982397accd0aaf3aaee87fd6b3248c22">fsm2</a> (const statType &amp;<a class="el" href="#a84be5fdd369b09a7c823062b2690d61d">start</a>, const statType &amp;end)</td></tr>
<tr class="separator:a982397accd0aaf3aaee87fd6b3248c22"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae0bdd36a835efc728fe827844d9ca7b9" id="r_ae0bdd36a835efc728fe827844d9ca7b9"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ae0bdd36a835efc728fe827844d9ca7b9">~fsm2</a> ()</td></tr>
<tr class="separator:ae0bdd36a835efc728fe827844d9ca7b9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac4403d6d645b27292fdaa932951e6107" id="r_ac4403d6d645b27292fdaa932951e6107"><td class="memItemLeft" align="right" valign="top"><a class="el" href="#aa151bc878f6634b12d0e48329ed36815">emErrCode</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ac4403d6d645b27292fdaa932951e6107">add</a> (const statType &amp;stat, <a class="el" href="#ac228e16d2c267a05f619c3ab31b944a2">enterFun_t</a> ent)</td></tr>
<tr class="memdesc:ac4403d6d645b27292fdaa932951e6107"><td class="mdescLeft">&#160;</td><td class="mdescRight">添加节点  <br /></td></tr>
<tr class="separator:ac4403d6d645b27292fdaa932951e6107"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2aea2dcb2a1ec39c3e37aa28c61ff65c" id="r_a2aea2dcb2a1ec39c3e37aa28c61ff65c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="#aa151bc878f6634b12d0e48329ed36815">emErrCode</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a2aea2dcb2a1ec39c3e37aa28c61ff65c">add</a> (const statType &amp;stat, <a class="el" href="#ae9a65cbfced3703367ae5a8a4cd2028e">leaveFun_t</a> leave)</td></tr>
<tr class="memdesc:a2aea2dcb2a1ec39c3e37aa28c61ff65c"><td class="mdescLeft">&#160;</td><td class="mdescRight">添加节点，仅仅指定离开回调函数  <br /></td></tr>
<tr class="separator:a2aea2dcb2a1ec39c3e37aa28c61ff65c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa6cc89141ebfac8a1e995c5ff8a544eb" id="r_aa6cc89141ebfac8a1e995c5ff8a544eb"><td class="memItemLeft" align="right" valign="top"><a class="el" href="#aa151bc878f6634b12d0e48329ed36815">emErrCode</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aa6cc89141ebfac8a1e995c5ff8a544eb">add</a> (const statType &amp;stat, <a class="el" href="#ac228e16d2c267a05f619c3ab31b944a2">enterFun_t</a> ent, <a class="el" href="#ae9a65cbfced3703367ae5a8a4cd2028e">leaveFun_t</a> leave)</td></tr>
<tr class="memdesc:aa6cc89141ebfac8a1e995c5ff8a544eb"><td class="mdescLeft">&#160;</td><td class="mdescRight">添加状态节点, 并指定进入回调和转出回调  <br /></td></tr>
<tr class="separator:aa6cc89141ebfac8a1e995c5ff8a544eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aee9f510693be93604f71dafc5b9c7d89" id="r_aee9f510693be93604f71dafc5b9c7d89"><td class="memItemLeft" align="right" valign="top"><a class="el" href="#aa151bc878f6634b12d0e48329ed36815">emErrCode</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aee9f510693be93604f71dafc5b9c7d89">add</a> (const statType &amp;from, const statType &amp;to, <a class="el" href="#ac228e16d2c267a05f619c3ab31b944a2">enterFun_t</a> ent)</td></tr>
<tr class="memdesc:aee9f510693be93604f71dafc5b9c7d89"><td class="mdescLeft">&#160;</td><td class="mdescRight">增加节点和转换。  <br /></td></tr>
<tr class="separator:aee9f510693be93604f71dafc5b9c7d89"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad990affcf0f8a6deab9dbe22247f9316" id="r_ad990affcf0f8a6deab9dbe22247f9316"><td class="memItemLeft" align="right" valign="top"><a class="el" href="#aa151bc878f6634b12d0e48329ed36815">emErrCode</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ad990affcf0f8a6deab9dbe22247f9316">add</a> (const statType &amp;from, const statType &amp;to)</td></tr>
<tr class="memdesc:ad990affcf0f8a6deab9dbe22247f9316"><td class="mdescLeft">&#160;</td><td class="mdescRight">添加转换，但是不包含raise函数。这个函数主要用于已经配置了状态触发函数或者不需要状态触发函数的情况  <br /></td></tr>
<tr class="separator:ad990affcf0f8a6deab9dbe22247f9316"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aca602f3622f113f153814e29a0dac1a0" id="r_aca602f3622f113f153814e29a0dac1a0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="#aa151bc878f6634b12d0e48329ed36815">emErrCode</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aca602f3622f113f153814e29a0dac1a0">add</a> (const statType &amp;from, const statType &amp;to, <a class="el" href="#a91085e365743f12172ad70b54c8c6a0f">raiseFun_t</a> raise)</td></tr>
<tr class="separator:aca602f3622f113f153814e29a0dac1a0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa40684e1356b647754b708c915349bf9" id="r_aa40684e1356b647754b708c915349bf9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="#aa151bc878f6634b12d0e48329ed36815">emErrCode</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aa40684e1356b647754b708c915349bf9">add</a> (const statType &amp;from, const statType &amp;to, <a class="el" href="#ae9a65cbfced3703367ae5a8a4cd2028e">leaveFun_t</a> leave, <a class="el" href="#a91085e365743f12172ad70b54c8c6a0f">raiseFun_t</a> raise)</td></tr>
<tr class="separator:aa40684e1356b647754b708c915349bf9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a99ff38d09af99804a7d4fed4c4dd337d" id="r_a99ff38d09af99804a7d4fed4c4dd337d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="#aa151bc878f6634b12d0e48329ed36815">emErrCode</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a99ff38d09af99804a7d4fed4c4dd337d">add</a> (const statType &amp;from, const statType &amp;to, <a class="el" href="#ac228e16d2c267a05f619c3ab31b944a2">enterFun_t</a> ent, <a class="el" href="#a91085e365743f12172ad70b54c8c6a0f">raiseFun_t</a> raise)</td></tr>
<tr class="separator:a99ff38d09af99804a7d4fed4c4dd337d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad25591101fe28f628d176f4ce634871a" id="r_ad25591101fe28f628d176f4ce634871a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="#aa151bc878f6634b12d0e48329ed36815">emErrCode</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ad25591101fe28f628d176f4ce634871a">add</a> (const statType &amp;from, const statType &amp;to, <a class="el" href="#ac228e16d2c267a05f619c3ab31b944a2">enterFun_t</a> ent, <a class="el" href="#ae9a65cbfced3703367ae5a8a4cd2028e">leaveFun_t</a> leave)</td></tr>
<tr class="memdesc:ad25591101fe28f628d176f4ce634871a"><td class="mdescLeft">&#160;</td><td class="mdescRight">添加节点和转换  <br /></td></tr>
<tr class="separator:ad25591101fe28f628d176f4ce634871a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0e1e9660d590b27043b4dd3d7d372daa" id="r_a0e1e9660d590b27043b4dd3d7d372daa"><td class="memItemLeft" align="right" valign="top"><a class="el" href="#aa151bc878f6634b12d0e48329ed36815">emErrCode</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a0e1e9660d590b27043b4dd3d7d372daa">add</a> (const statType &amp;from, const statType &amp;to, <a class="el" href="#ae9a65cbfced3703367ae5a8a4cd2028e">leaveFun_t</a> leave)</td></tr>
<tr class="separator:a0e1e9660d590b27043b4dd3d7d372daa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af9d73ab8811939d30c3cc95ba0b1223b" id="r_af9d73ab8811939d30c3cc95ba0b1223b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="#aa151bc878f6634b12d0e48329ed36815">emErrCode</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#af9d73ab8811939d30c3cc95ba0b1223b">add</a> (const statType &amp;from, const statType to, <a class="el" href="#ac228e16d2c267a05f619c3ab31b944a2">enterFun_t</a> ent, <a class="el" href="#ae9a65cbfced3703367ae5a8a4cd2028e">leaveFun_t</a> leave, <a class="el" href="#a91085e365743f12172ad70b54c8c6a0f">raiseFun_t</a> raise)</td></tr>
<tr class="separator:af9d73ab8811939d30c3cc95ba0b1223b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a84be5fdd369b09a7c823062b2690d61d" id="r_a84be5fdd369b09a7c823062b2690d61d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a84be5fdd369b09a7c823062b2690d61d">start</a> ()</td></tr>
<tr class="memdesc:a84be5fdd369b09a7c823062b2690d61d"><td class="mdescLeft">&#160;</td><td class="mdescRight">启动执行.标记状态初始状态，如果初始状态包含了进入回调函数，则应该调用这个回调函数  <br /></td></tr>
<tr class="separator:a84be5fdd369b09a7c823062b2690d61d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9d362b5f67ed56987c2690ab4c13feb8" id="r_a9d362b5f67ed56987c2690ab4c13feb8"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a9d362b5f67ed56987c2690ab4c13feb8">reset</a> ()</td></tr>
<tr class="separator:a9d362b5f67ed56987c2690ab4c13feb8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4b90fe5c88a6f14aa6edcc2277456cd4" id="r_a4b90fe5c88a6f14aa6edcc2277456cd4"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a4b90fe5c88a6f14aa6edcc2277456cd4">isRunning</a> ()</td></tr>
<tr class="memdesc:a4b90fe5c88a6f14aa6edcc2277456cd4"><td class="mdescLeft">&#160;</td><td class="mdescRight">判断状态机是否正在运行  <br /></td></tr>
<tr class="separator:a4b90fe5c88a6f14aa6edcc2277456cd4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4291c65362cb83c146877c3ccdf957fa" id="r_a4291c65362cb83c146877c3ccdf957fa"><td class="memItemLeft" align="right" valign="top"><a class="el" href="#aa151bc878f6634b12d0e48329ed36815">emErrCode</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a4291c65362cb83c146877c3ccdf957fa">transform</a> (const statType &amp;next)</td></tr>
<tr class="memdesc:a4291c65362cb83c146877c3ccdf957fa"><td class="mdescLeft">&#160;</td><td class="mdescRight">强制转换状态到指定状态。虽然是强制转换，但是仍然要求两个状态之间存在转换路径。这个 可以用户旁路触发的情况  <br /></td></tr>
<tr class="separator:a4291c65362cb83c146877c3ccdf957fa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac6f34abf4145fffb259fbfee0954f93c" id="r_ac6f34abf4145fffb259fbfee0954f93c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="#aa151bc878f6634b12d0e48329ed36815">emErrCode</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ac6f34abf4145fffb259fbfee0954f93c">eat</a> (const realT &amp;data)</td></tr>
<tr class="memdesc:ac6f34abf4145fffb259fbfee0954f93c"><td class="mdescLeft">&#160;</td><td class="mdescRight">接受数据执行状态转换  <br /></td></tr>
<tr class="separator:ac6f34abf4145fffb259fbfee0954f93c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a07c994fd63d65016c1509ec1902d3c38" id="r_a07c994fd63d65016c1509ec1902d3c38"><td class="memItemLeft" align="right" valign="top"><a class="el" href="#aa151bc878f6634b12d0e48329ed36815">emErrCode</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a07c994fd63d65016c1509ec1902d3c38">setLeave</a> (const statType &amp;id, <a class="el" href="#ae9a65cbfced3703367ae5a8a4cd2028e">leaveFun_t</a> fun)</td></tr>
<tr class="memdesc:a07c994fd63d65016c1509ec1902d3c38"><td class="mdescLeft">&#160;</td><td class="mdescRight">指定离开的回调函数  <br /></td></tr>
<tr class="separator:a07c994fd63d65016c1509ec1902d3c38"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af164f2e72ceaac8beb177f0a30335835" id="r_af164f2e72ceaac8beb177f0a30335835"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#af164f2e72ceaac8beb177f0a30335835">clearRaw</a> ()</td></tr>
<tr class="memdesc:af164f2e72ceaac8beb177f0a30335835"><td class="mdescLeft">&#160;</td><td class="mdescRight">清理缓存数据内容  <br /></td></tr>
<tr class="separator:af164f2e72ceaac8beb177f0a30335835"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a17a3fbd2e98e7e7ee658992d1762fd56" id="r_a17a3fbd2e98e7e7ee658992d1762fd56"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a17a3fbd2e98e7e7ee658992d1762fd56">popRaw</a> ()</td></tr>
<tr class="memdesc:a17a3fbd2e98e7e7ee658992d1762fd56"><td class="mdescLeft">&#160;</td><td class="mdescRight">删除首元素  <br /></td></tr>
<tr class="separator:a17a3fbd2e98e7e7ee658992d1762fd56"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-static-methods" name="pub-static-methods"></a>
静态 Public 成员函数</h2></td></tr>
<tr class="memitem:a9b329ab4fe0a84187648a61023639c39" id="r_a9b329ab4fe0a84187648a61023639c39"><td class="memItemLeft" align="right" valign="top">static std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a9b329ab4fe0a84187648a61023639c39">errMsg</a> (<a class="el" href="#aa151bc878f6634b12d0e48329ed36815">emErrCode</a> e)</td></tr>
<tr class="memdesc:a9b329ab4fe0a84187648a61023639c39"><td class="mdescLeft">&#160;</td><td class="mdescRight">返回错误信息  <br /></td></tr>
<tr class="separator:a9b329ab4fe0a84187648a61023639c39"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">详细描述</h2>
<div class="textblock"><div class="compoundTemplParams">template&lt;typename statType, typename dataType, typename realT = typename std::decay&lt; dataType &gt;::type&gt;<br />
class wheels::fsm2&lt; statType, dataType, realT &gt;</div><p>状态机定义， 这个状态机不支持子状态模式 </p>

<p class="definition">在文件 <a class="el" href="../../d4/d64/fsm2_8hpp_source.html">fsm2.hpp</a> 第 <a class="el" href="../../d4/d64/fsm2_8hpp_source.html#l00030">30</a> 行定义.</p>
</div><h2 class="groupheader">成员类型定义说明</h2>
<a id="ac228e16d2c267a05f619c3ab31b944a2" name="ac228e16d2c267a05f619c3ab31b944a2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac228e16d2c267a05f619c3ab31b944a2">&#9670;&#160;</a></span>enterFun_t</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename statType , typename dataType , typename realT  = typename std::decay&lt; dataType &gt;::type&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">using <a class="el" href="../../d4/d5b/classwheels_1_1fsm2.html">wheels::fsm2</a>&lt; statType, dataType, realT &gt;::enterFun_t = std::function&lt; bool ( const statType&amp; , const <a class="el" href="../../d4/dfa/structwheels_1_1fsm2_1_1st_data_item.html">stDataItem</a>&amp; ) &gt;</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>进入状态处理函数。函数原型为：bool cbFun( const std::string&amp; id , const stDataItem&amp; data ); </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramname">const</td><td>statType&amp; [ I ], 当前状态ID </td></tr>
    <tr><td class="paramname">const</td><td><a class="el" href="../../d4/dfa/structwheels_1_1fsm2_1_1st_data_item.html">stDataItem</a>&amp; [ I ], 当前已经处理的数据内容 </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>如果函数执行后需要自动转换状态返回true，否则返回false </dd></dl>

<p class="definition">在文件 <a class="el" href="../../d4/d64/fsm2_8hpp_source.html">fsm2.hpp</a> 第 <a class="el" href="../../d4/d64/fsm2_8hpp_source.html#l00090">90</a> 行定义.</p>

</div>
</div>
<a id="ae9a65cbfced3703367ae5a8a4cd2028e" name="ae9a65cbfced3703367ae5a8a4cd2028e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae9a65cbfced3703367ae5a8a4cd2028e">&#9670;&#160;</a></span>leaveFun_t</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename statType , typename dataType , typename realT  = typename std::decay&lt; dataType &gt;::type&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">using <a class="el" href="../../d4/d5b/classwheels_1_1fsm2.html">wheels::fsm2</a>&lt; statType, dataType, realT &gt;::leaveFun_t = std::function&lt; statType ( const statType&amp; , const <a class="el" href="../../d4/dfa/structwheels_1_1fsm2_1_1st_data_item.html">stDataItem</a>&amp; ) &gt;</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>离开状态转换函数。函数原型为 std::string cbFun( const std::string&amp; id , const stDataItem&amp; data ); </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramname">id[</td><td>I ], 当前状态ID </td></tr>
    <tr><td class="paramname">data[</td><td>I ] </td></tr>
  </table>
  </dd>
</dl>

<p class="definition">在文件 <a class="el" href="../../d4/d64/fsm2_8hpp_source.html">fsm2.hpp</a> 第 <a class="el" href="../../d4/d64/fsm2_8hpp_source.html#l00095">95</a> 行定义.</p>

</div>
</div>
<a id="a91085e365743f12172ad70b54c8c6a0f" name="a91085e365743f12172ad70b54c8c6a0f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a91085e365743f12172ad70b54c8c6a0f">&#9670;&#160;</a></span>raiseFun_t</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename statType , typename dataType , typename realT  = typename std::decay&lt; dataType &gt;::type&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">using <a class="el" href="../../d4/d5b/classwheels_1_1fsm2.html">wheels::fsm2</a>&lt; statType, dataType, realT &gt;::raiseFun_t = std::function&lt; void ( const statType&amp; , const statType&amp; , const <a class="el" href="../../d4/dfa/structwheels_1_1fsm2_1_1st_data_item.html">stDataItem</a>&amp; ) &gt;</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>发生转换的时候调用这个函数 </p>

<p class="definition">在文件 <a class="el" href="../../d4/d64/fsm2_8hpp_source.html">fsm2.hpp</a> 第 <a class="el" href="../../d4/d64/fsm2_8hpp_source.html#l00097">97</a> 行定义.</p>

</div>
</div>
<a id="a82b0870134b63c704c9b4057ee472c36" name="a82b0870134b63c704c9b4057ee472c36"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a82b0870134b63c704c9b4057ee472c36">&#9670;&#160;</a></span>statTbl_t</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename statType , typename dataType , typename realT  = typename std::decay&lt; dataType &gt;::type&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">using <a class="el" href="../../d4/d5b/classwheels_1_1fsm2.html">wheels::fsm2</a>&lt; statType, dataType, realT &gt;::statTbl_t = std::map&lt; statType , <a class="el" href="../../dc/dd4/structwheels_1_1fsm2_1_1state.html">state</a> * &gt;</td>
        </tr>
      </table>
</div><div class="memdoc">

<p class="definition">在文件 <a class="el" href="../../d4/d64/fsm2_8hpp_source.html">fsm2.hpp</a> 第 <a class="el" href="../../d4/d64/fsm2_8hpp_source.html#l00220">220</a> 行定义.</p>

</div>
</div>
<a id="a960dc87c085dcf7042729475a031b956" name="a960dc87c085dcf7042729475a031b956"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a960dc87c085dcf7042729475a031b956">&#9670;&#160;</a></span>transTbl_t</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename statType , typename dataType , typename realT  = typename std::decay&lt; dataType &gt;::type&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">using <a class="el" href="../../d4/d5b/classwheels_1_1fsm2.html">wheels::fsm2</a>&lt; statType, dataType, realT &gt;::transTbl_t = std::map&lt; <a class="el" href="../../d0/d2c/structwheels_1_1fsm2_1_1trans_key_type.html">transKeyType</a> , <a class="el" href="../../da/dd7/structwheels_1_1fsm2_1_1trans.html">trans</a>* &gt;</td>
        </tr>
      </table>
</div><div class="memdoc">

<p class="definition">在文件 <a class="el" href="../../d4/d64/fsm2_8hpp_source.html">fsm2.hpp</a> 第 <a class="el" href="../../d4/d64/fsm2_8hpp_source.html#l00219">219</a> 行定义.</p>

</div>
</div>
<h2 class="groupheader">成员枚举类型说明</h2>
<a id="aa151bc878f6634b12d0e48329ed36815" name="aa151bc878f6634b12d0e48329ed36815"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa151bc878f6634b12d0e48329ed36815">&#9670;&#160;</a></span>emErrCode</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename statType , typename dataType , typename realT  = typename std::decay&lt; dataType &gt;::type&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="#aa151bc878f6634b12d0e48329ed36815">wheels::fsm2::emErrCode</a></td>
        </tr>
      </table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">枚举值</th></tr><tr><td class="fieldname"><a id="aa151bc878f6634b12d0e48329ed36815a9cb635b25ac5505ea1d750e394bd6ded" name="aa151bc878f6634b12d0e48329ed36815a9cb635b25ac5505ea1d750e394bd6ded"></a>ERR_ALLOC_MEM&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="aa151bc878f6634b12d0e48329ed36815a4e5696aa3658e8f1fd96523304280229" name="aa151bc878f6634b12d0e48329ed36815a4e5696aa3658e8f1fd96523304280229"></a>ERR_STAT_ID_EMPTY&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="aa151bc878f6634b12d0e48329ed36815ab96bc5057558a490e6af385129653af8" name="aa151bc878f6634b12d0e48329ed36815ab96bc5057558a490e6af385129653af8"></a>ERR_STAT_EXIST&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="aa151bc878f6634b12d0e48329ed36815ae0bd920d1a633a8c8fc1b8f651d0bd1e" name="aa151bc878f6634b12d0e48329ed36815ae0bd920d1a633a8c8fc1b8f651d0bd1e"></a>ERR_FSM_NOT_START&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="aa151bc878f6634b12d0e48329ed36815a79e5e3b349b279ad18d0721fef9f4c68" name="aa151bc878f6634b12d0e48329ed36815a79e5e3b349b279ad18d0721fef9f4c68"></a>ERR_STAT_NOT_DEFINED&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="aa151bc878f6634b12d0e48329ed36815a9321e17214abc743a379052c1f3d292d" name="aa151bc878f6634b12d0e48329ed36815a9321e17214abc743a379052c1f3d292d"></a>ERR_STAT_FINISHED&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="aa151bc878f6634b12d0e48329ed36815abe0e48838159bd7cc524f8759a290a5e" name="aa151bc878f6634b12d0e48329ed36815abe0e48838159bd7cc524f8759a290a5e"></a>ERR_STAT_OBJECT_NULL&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="aa151bc878f6634b12d0e48329ed36815a6a645ab20bf8184383a455fb329c71ec" name="aa151bc878f6634b12d0e48329ed36815a6a645ab20bf8184383a455fb329c71ec"></a>ERR_CAN_NOT_FIND_STAT&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="aa151bc878f6634b12d0e48329ed36815ab667df5f09eb6dcd1fceb64426c1f0de" name="aa151bc878f6634b12d0e48329ed36815ab667df5f09eb6dcd1fceb64426c1f0de"></a>OK&#160;</td><td class="fielddoc"></td></tr>
</table>

<p class="definition">在文件 <a class="el" href="../../d4/d64/fsm2_8hpp_source.html">fsm2.hpp</a> 第 <a class="el" href="../../d4/d64/fsm2_8hpp_source.html#l00036">36</a> 行定义.</p>

</div>
</div>
<a id="a7c18cb1a59bc68fc99510ea160761a66" name="a7c18cb1a59bc68fc99510ea160761a66"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7c18cb1a59bc68fc99510ea160761a66">&#9670;&#160;</a></span>emType</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename statType , typename dataType , typename realT  = typename std::decay&lt; dataType &gt;::type&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="#a7c18cb1a59bc68fc99510ea160761a66">wheels::fsm2::emType</a></td>
        </tr>
      </table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">枚举值</th></tr><tr><td class="fieldname"><a id="a7c18cb1a59bc68fc99510ea160761a66a9425a2213fdac5735fffac99e2d23f1d" name="a7c18cb1a59bc68fc99510ea160761a66a9425a2213fdac5735fffac99e2d23f1d"></a>START&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a7c18cb1a59bc68fc99510ea160761a66ada521840dc89a1b58d60594a1ab5efd5" name="a7c18cb1a59bc68fc99510ea160761a66ada521840dc89a1b58d60594a1ab5efd5"></a>END&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a7c18cb1a59bc68fc99510ea160761a66a660f1168057f566eef7b28e525086fd1" name="a7c18cb1a59bc68fc99510ea160761a66a660f1168057f566eef7b28e525086fd1"></a>NORMAL&#160;</td><td class="fielddoc"></td></tr>
</table>

<p class="definition">在文件 <a class="el" href="../../d4/d64/fsm2_8hpp_source.html">fsm2.hpp</a> 第 <a class="el" href="../../d4/d64/fsm2_8hpp_source.html#l00034">34</a> 行定义.</p>

</div>
</div>
<h2 class="groupheader">构造及析构函数说明</h2>
<a id="a5528607078dc10cbcd4f063a8ea305eb" name="a5528607078dc10cbcd4f063a8ea305eb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5528607078dc10cbcd4f063a8ea305eb">&#9670;&#160;</a></span>fsm2() <span class="overload">[1/4]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename statType , typename dataType , typename realT  = typename std::decay&lt; dataType &gt;::type&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="../../d4/d5b/classwheels_1_1fsm2.html">wheels::fsm2</a>&lt; statType, dataType, realT &gt;::fsm2 </td>
          <td>(</td>
          <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p class="definition">在文件 <a class="el" href="../../d4/d64/fsm2_8hpp_source.html">fsm2.hpp</a> 第 <a class="el" href="../../d4/d64/fsm2_8hpp_source.html#l00234">234</a> 行定义.</p>

</div>
</div>
<a id="a912a2c4483c2fa1340ba2a62049e696f" name="a912a2c4483c2fa1340ba2a62049e696f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a912a2c4483c2fa1340ba2a62049e696f">&#9670;&#160;</a></span>fsm2() <span class="overload">[2/4]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename statType , typename dataType , typename realT  = typename std::decay&lt; dataType &gt;::type&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="../../d4/d5b/classwheels_1_1fsm2.html">wheels::fsm2</a>&lt; statType, dataType, realT &gt;::fsm2 </td>
          <td>(</td>
          <td class="paramtype">const statType &amp;</td>          <td class="paramname"><span class="paramname"><em>start</em></span>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="#ac228e16d2c267a05f619c3ab31b944a2">enterFun_t</a></td>          <td class="paramname"><span class="paramname"><em>entfun</em></span>&#160;)</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>创建状态机对象。同时初始化相关回调函数 </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramname">start[</td><td>I ], 起始状态名称 </td></tr>
    <tr><td class="paramname">end[</td><td>I ], 结束状态 </td></tr>
    <tr><td class="paramname">entfun[</td><td>I ], 进入起始状态触发函数 </td></tr>
    <tr><td class="paramname">leavefun[</td><td>I ], 初始状态离开回调函数 </td></tr>
  </table>
  </dd>
</dl>
<dl class="exception"><dt>异常</dt><dd>
  <table class="exception">
    <tr><td class="paramname">起始状态为空字符串的时候抛出</td><td>ERR_STAT_ID_EMPTY </td></tr>
  </table>
  </dd>
</dl>

<p class="definition">在文件 <a class="el" href="../../d4/d64/fsm2_8hpp_source.html">fsm2.hpp</a> 第 <a class="el" href="../../d4/d64/fsm2_8hpp_source.html#l00243">243</a> 行定义.</p>
<div class="dynheader">
函数调用图:</div>
<div class="dyncontent">
<div class="center"><img src="../../d4/d5b/classwheels_1_1fsm2_a912a2c4483c2fa1340ba2a62049e696f_cgraph.png" border="0" usemap="#ad4/d5b/classwheels_1_1fsm2_a912a2c4483c2fa1340ba2a62049e696f_cgraph" alt=""/></div>
<map name="ad4/d5b/classwheels_1_1fsm2_a912a2c4483c2fa1340ba2a62049e696f_cgraph" id="ad4/d5b/classwheels_1_1fsm2_a912a2c4483c2fa1340ba2a62049e696f_cgraph">
<area shape="rect" title="创建状态机对象。同时初始化相关回调函数" alt="" coords="5,29,142,56"/>
<area shape="rect" href="../../d4/d5b/classwheels_1_1fsm2.html#a84be5fdd369b09a7c823062b2690d61d" title="启动执行.标记状态初始状态，如果初始状态包含了进入回调函数，则应该调用这个回调函数" alt="" coords="190,29,323,56"/>
<area shape="poly" title=" " alt="" coords="142,40,174,40,174,45,142,45"/>
<area shape="rect" href="../../d4/d5b/classwheels_1_1fsm2.html#a4291c65362cb83c146877c3ccdf957fa" title="强制转换状态到指定状态。虽然是强制转换，但是仍然要求两个状态之间存在转换路径。这个 可以用户旁路触发的情况" alt="" coords="371,29,533,56"/>
<area shape="poly" title=" " alt="" coords="324,40,355,40,355,45,324,45"/>
<area shape="poly" title=" " alt="" coords="419,30,413,21,417,11,430,5,452,3,476,5,488,12,486,16,474,10,452,8,432,10,421,15,418,20,423,27"/>
</map>
</div>

</div>
</div>
<a id="aa95915defa78358c2a1272647279af40" name="aa95915defa78358c2a1272647279af40"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa95915defa78358c2a1272647279af40">&#9670;&#160;</a></span>fsm2() <span class="overload">[3/4]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename statType , typename dataType , typename realT  = typename std::decay&lt; dataType &gt;::type&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="../../d4/d5b/classwheels_1_1fsm2.html">wheels::fsm2</a>&lt; statType, dataType, realT &gt;::fsm2 </td>
          <td>(</td>
          <td class="paramtype">const statType &amp;</td>          <td class="paramname"><span class="paramname"><em>start</em></span>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="#ac228e16d2c267a05f619c3ab31b944a2">enterFun_t</a></td>          <td class="paramname"><span class="paramname"><em>entfun</em></span>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="#ae9a65cbfced3703367ae5a8a4cd2028e">leaveFun_t</a></td>          <td class="paramname"><span class="paramname"><em>leavefun</em></span>&#160;)</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p class="definition">在文件 <a class="el" href="../../d4/d64/fsm2_8hpp_source.html">fsm2.hpp</a> 第 <a class="el" href="../../d4/d64/fsm2_8hpp_source.html#l00251">251</a> 行定义.</p>
<div class="dynheader">
函数调用图:</div>
<div class="dyncontent">
<div class="center"><img src="../../d4/d5b/classwheels_1_1fsm2_aa95915defa78358c2a1272647279af40_cgraph.png" border="0" usemap="#ad4/d5b/classwheels_1_1fsm2_aa95915defa78358c2a1272647279af40_cgraph" alt=""/></div>
<map name="ad4/d5b/classwheels_1_1fsm2_aa95915defa78358c2a1272647279af40_cgraph" id="ad4/d5b/classwheels_1_1fsm2_aa95915defa78358c2a1272647279af40_cgraph">
<area shape="rect" title=" " alt="" coords="5,29,142,56"/>
<area shape="rect" href="../../d4/d5b/classwheels_1_1fsm2.html#a84be5fdd369b09a7c823062b2690d61d" title="启动执行.标记状态初始状态，如果初始状态包含了进入回调函数，则应该调用这个回调函数" alt="" coords="190,29,323,56"/>
<area shape="poly" title=" " alt="" coords="142,40,174,40,174,45,142,45"/>
<area shape="rect" href="../../d4/d5b/classwheels_1_1fsm2.html#a4291c65362cb83c146877c3ccdf957fa" title="强制转换状态到指定状态。虽然是强制转换，但是仍然要求两个状态之间存在转换路径。这个 可以用户旁路触发的情况" alt="" coords="371,29,533,56"/>
<area shape="poly" title=" " alt="" coords="324,40,355,40,355,45,324,45"/>
<area shape="poly" title=" " alt="" coords="419,30,413,21,417,11,430,5,452,3,476,5,488,12,486,16,474,10,452,8,432,10,421,15,418,20,423,27"/>
</map>
</div>

</div>
</div>
<a id="a982397accd0aaf3aaee87fd6b3248c22" name="a982397accd0aaf3aaee87fd6b3248c22"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a982397accd0aaf3aaee87fd6b3248c22">&#9670;&#160;</a></span>fsm2() <span class="overload">[4/4]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename statType , typename dataType , typename realT  = typename std::decay&lt; dataType &gt;::type&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="../../d4/d5b/classwheels_1_1fsm2.html">wheels::fsm2</a>&lt; statType, dataType, realT &gt;::fsm2 </td>
          <td>(</td>
          <td class="paramtype">const statType &amp;</td>          <td class="paramname"><span class="paramname"><em>start</em></span>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const statType &amp;</td>          <td class="paramname"><span class="paramname"><em>end</em></span>&#160;)</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p class="definition">在文件 <a class="el" href="../../d4/d64/fsm2_8hpp_source.html">fsm2.hpp</a> 第 <a class="el" href="../../d4/d64/fsm2_8hpp_source.html#l00261">261</a> 行定义.</p>
<div class="dynheader">
函数调用图:</div>
<div class="dyncontent">
<div class="center"><img src="../../d4/d5b/classwheels_1_1fsm2_a982397accd0aaf3aaee87fd6b3248c22_cgraph.png" border="0" usemap="#ad4/d5b/classwheels_1_1fsm2_a982397accd0aaf3aaee87fd6b3248c22_cgraph" alt=""/></div>
<map name="ad4/d5b/classwheels_1_1fsm2_a982397accd0aaf3aaee87fd6b3248c22_cgraph" id="ad4/d5b/classwheels_1_1fsm2_a982397accd0aaf3aaee87fd6b3248c22_cgraph">
<area shape="rect" title=" " alt="" coords="5,29,142,56"/>
<area shape="rect" href="../../d4/d5b/classwheels_1_1fsm2.html#a84be5fdd369b09a7c823062b2690d61d" title="启动执行.标记状态初始状态，如果初始状态包含了进入回调函数，则应该调用这个回调函数" alt="" coords="190,29,323,56"/>
<area shape="poly" title=" " alt="" coords="142,40,174,40,174,45,142,45"/>
<area shape="rect" href="../../d4/d5b/classwheels_1_1fsm2.html#a4291c65362cb83c146877c3ccdf957fa" title="强制转换状态到指定状态。虽然是强制转换，但是仍然要求两个状态之间存在转换路径。这个 可以用户旁路触发的情况" alt="" coords="371,29,533,56"/>
<area shape="poly" title=" " alt="" coords="324,40,355,40,355,45,324,45"/>
<area shape="poly" title=" " alt="" coords="419,30,413,21,417,11,430,5,452,3,476,5,488,12,486,16,474,10,452,8,432,10,421,15,418,20,423,27"/>
</map>
</div>

</div>
</div>
<a id="ae0bdd36a835efc728fe827844d9ca7b9" name="ae0bdd36a835efc728fe827844d9ca7b9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae0bdd36a835efc728fe827844d9ca7b9">&#9670;&#160;</a></span>~fsm2()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename statType , typename dataType , typename realT  = typename std::decay&lt; dataType &gt;::type&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="../../d4/d5b/classwheels_1_1fsm2.html">wheels::fsm2</a>&lt; statType, dataType, realT &gt;::~<a class="el" href="../../d4/d5b/classwheels_1_1fsm2.html">fsm2</a> </td>
          <td>(</td>
          <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p class="definition">在文件 <a class="el" href="../../d4/d64/fsm2_8hpp_source.html">fsm2.hpp</a> 第 <a class="el" href="../../d4/d64/fsm2_8hpp_source.html#l00270">270</a> 行定义.</p>

</div>
</div>
<h2 class="groupheader">成员函数说明</h2>
<a id="ad990affcf0f8a6deab9dbe22247f9316" name="ad990affcf0f8a6deab9dbe22247f9316"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad990affcf0f8a6deab9dbe22247f9316">&#9670;&#160;</a></span>add() <span class="overload">[1/11]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename statType , typename dataType , typename realT  = typename std::decay&lt; dataType &gt;::type&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="#aa151bc878f6634b12d0e48329ed36815">emErrCode</a> <a class="el" href="../../d4/d5b/classwheels_1_1fsm2.html">wheels::fsm2</a>&lt; statType, dataType, realT &gt;::add </td>
          <td>(</td>
          <td class="paramtype">const statType &amp;</td>          <td class="paramname"><span class="paramname"><em>from</em></span>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const statType &amp;</td>          <td class="paramname"><span class="paramname"><em>to</em></span>&#160;)</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>添加转换，但是不包含raise函数。这个函数主要用于已经配置了状态触发函数或者不需要状态触发函数的情况 </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramname">from[</td><td>I ] </td></tr>
    <tr><td class="paramname">to[</td><td>I ] </td></tr>
  </table>
  </dd>
</dl>

<p class="definition">在文件 <a class="el" href="../../d4/d64/fsm2_8hpp_source.html">fsm2.hpp</a> 第 <a class="el" href="../../d4/d64/fsm2_8hpp_source.html#l00365">365</a> 行定义.</p>

</div>
</div>
<a id="aee9f510693be93604f71dafc5b9c7d89" name="aee9f510693be93604f71dafc5b9c7d89"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aee9f510693be93604f71dafc5b9c7d89">&#9670;&#160;</a></span>add() <span class="overload">[2/11]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename statType , typename dataType , typename realT  = typename std::decay&lt; dataType &gt;::type&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="#aa151bc878f6634b12d0e48329ed36815">emErrCode</a> <a class="el" href="../../d4/d5b/classwheels_1_1fsm2.html">wheels::fsm2</a>&lt; statType, dataType, realT &gt;::add </td>
          <td>(</td>
          <td class="paramtype">const statType &amp;</td>          <td class="paramname"><span class="paramname"><em>from</em></span>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const statType &amp;</td>          <td class="paramname"><span class="paramname"><em>to</em></span>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="#ac228e16d2c267a05f619c3ab31b944a2">enterFun_t</a></td>          <td class="paramname"><span class="paramname"><em>ent</em></span>&#160;)</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>增加节点和转换。 </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramname">from[</td><td>I ] </td></tr>
    <tr><td class="paramname">to[</td><td>I ] </td></tr>
    <tr><td class="paramname">ent[</td><td>I ] </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd></dd></dl>
<dl class="section note"><dt>注解</dt><dd>这个函数添加的状态进入函数用于目标节点 </dd></dl>

<p class="definition">在文件 <a class="el" href="../../d4/d64/fsm2_8hpp_source.html">fsm2.hpp</a> 第 <a class="el" href="../../d4/d64/fsm2_8hpp_source.html#l00340">340</a> 行定义.</p>

</div>
</div>
<a id="ad25591101fe28f628d176f4ce634871a" name="ad25591101fe28f628d176f4ce634871a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad25591101fe28f628d176f4ce634871a">&#9670;&#160;</a></span>add() <span class="overload">[3/11]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename statType , typename dataType , typename realT  = typename std::decay&lt; dataType &gt;::type&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="#aa151bc878f6634b12d0e48329ed36815">emErrCode</a> <a class="el" href="../../d4/d5b/classwheels_1_1fsm2.html">wheels::fsm2</a>&lt; statType, dataType, realT &gt;::add </td>
          <td>(</td>
          <td class="paramtype">const statType &amp;</td>          <td class="paramname"><span class="paramname"><em>from</em></span>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const statType &amp;</td>          <td class="paramname"><span class="paramname"><em>to</em></span>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="#ac228e16d2c267a05f619c3ab31b944a2">enterFun_t</a></td>          <td class="paramname"><span class="paramname"><em>ent</em></span>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="#ae9a65cbfced3703367ae5a8a4cd2028e">leaveFun_t</a></td>          <td class="paramname"><span class="paramname"><em>leave</em></span>&#160;)</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>添加节点和转换 </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramname">from[</td><td>I ] </td></tr>
    <tr><td class="paramname">to[</td><td>I ], </td></tr>
    <tr><td class="paramname">ent[</td><td>I ], ent作用于to节点 </td></tr>
    <tr><td class="paramname">leave[</td><td>I ], leave作用于from节点 </td></tr>
  </table>
  </dd>
</dl>

<p class="definition">在文件 <a class="el" href="../../d4/d64/fsm2_8hpp_source.html">fsm2.hpp</a> 第 <a class="el" href="../../d4/d64/fsm2_8hpp_source.html#l00466">466</a> 行定义.</p>

</div>
</div>
<a id="a99ff38d09af99804a7d4fed4c4dd337d" name="a99ff38d09af99804a7d4fed4c4dd337d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a99ff38d09af99804a7d4fed4c4dd337d">&#9670;&#160;</a></span>add() <span class="overload">[4/11]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename statType , typename dataType , typename realT  = typename std::decay&lt; dataType &gt;::type&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="#aa151bc878f6634b12d0e48329ed36815">emErrCode</a> <a class="el" href="../../d4/d5b/classwheels_1_1fsm2.html">wheels::fsm2</a>&lt; statType, dataType, realT &gt;::add </td>
          <td>(</td>
          <td class="paramtype">const statType &amp;</td>          <td class="paramname"><span class="paramname"><em>from</em></span>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const statType &amp;</td>          <td class="paramname"><span class="paramname"><em>to</em></span>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="#ac228e16d2c267a05f619c3ab31b944a2">enterFun_t</a></td>          <td class="paramname"><span class="paramname"><em>ent</em></span>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="#a91085e365743f12172ad70b54c8c6a0f">raiseFun_t</a></td>          <td class="paramname"><span class="paramname"><em>raise</em></span>&#160;)</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p class="definition">在文件 <a class="el" href="../../d4/d64/fsm2_8hpp_source.html">fsm2.hpp</a> 第 <a class="el" href="../../d4/d64/fsm2_8hpp_source.html#l00432">432</a> 行定义.</p>

</div>
</div>
<a id="a0e1e9660d590b27043b4dd3d7d372daa" name="a0e1e9660d590b27043b4dd3d7d372daa"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0e1e9660d590b27043b4dd3d7d372daa">&#9670;&#160;</a></span>add() <span class="overload">[5/11]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename statType , typename dataType , typename realT  = typename std::decay&lt; dataType &gt;::type&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="#aa151bc878f6634b12d0e48329ed36815">emErrCode</a> <a class="el" href="../../d4/d5b/classwheels_1_1fsm2.html">wheels::fsm2</a>&lt; statType, dataType, realT &gt;::add </td>
          <td>(</td>
          <td class="paramtype">const statType &amp;</td>          <td class="paramname"><span class="paramname"><em>from</em></span>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const statType &amp;</td>          <td class="paramname"><span class="paramname"><em>to</em></span>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="#ae9a65cbfced3703367ae5a8a4cd2028e">leaveFun_t</a></td>          <td class="paramname"><span class="paramname"><em>leave</em></span>&#160;)</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p class="definition">在文件 <a class="el" href="../../d4/d64/fsm2_8hpp_source.html">fsm2.hpp</a> 第 <a class="el" href="../../d4/d64/fsm2_8hpp_source.html#l00485">485</a> 行定义.</p>

</div>
</div>
<a id="aa40684e1356b647754b708c915349bf9" name="aa40684e1356b647754b708c915349bf9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa40684e1356b647754b708c915349bf9">&#9670;&#160;</a></span>add() <span class="overload">[6/11]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename statType , typename dataType , typename realT  = typename std::decay&lt; dataType &gt;::type&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="#aa151bc878f6634b12d0e48329ed36815">emErrCode</a> <a class="el" href="../../d4/d5b/classwheels_1_1fsm2.html">wheels::fsm2</a>&lt; statType, dataType, realT &gt;::add </td>
          <td>(</td>
          <td class="paramtype">const statType &amp;</td>          <td class="paramname"><span class="paramname"><em>from</em></span>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const statType &amp;</td>          <td class="paramname"><span class="paramname"><em>to</em></span>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="#ae9a65cbfced3703367ae5a8a4cd2028e">leaveFun_t</a></td>          <td class="paramname"><span class="paramname"><em>leave</em></span>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="#a91085e365743f12172ad70b54c8c6a0f">raiseFun_t</a></td>          <td class="paramname"><span class="paramname"><em>raise</em></span>&#160;)</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p class="definition">在文件 <a class="el" href="../../d4/d64/fsm2_8hpp_source.html">fsm2.hpp</a> 第 <a class="el" href="../../d4/d64/fsm2_8hpp_source.html#l00406">406</a> 行定义.</p>

</div>
</div>
<a id="aca602f3622f113f153814e29a0dac1a0" name="aca602f3622f113f153814e29a0dac1a0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aca602f3622f113f153814e29a0dac1a0">&#9670;&#160;</a></span>add() <span class="overload">[7/11]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename statType , typename dataType , typename realT  = typename std::decay&lt; dataType &gt;::type&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="#aa151bc878f6634b12d0e48329ed36815">emErrCode</a> <a class="el" href="../../d4/d5b/classwheels_1_1fsm2.html">wheels::fsm2</a>&lt; statType, dataType, realT &gt;::add </td>
          <td>(</td>
          <td class="paramtype">const statType &amp;</td>          <td class="paramname"><span class="paramname"><em>from</em></span>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const statType &amp;</td>          <td class="paramname"><span class="paramname"><em>to</em></span>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="#a91085e365743f12172ad70b54c8c6a0f">raiseFun_t</a></td>          <td class="paramname"><span class="paramname"><em>raise</em></span>&#160;)</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p class="definition">在文件 <a class="el" href="../../d4/d64/fsm2_8hpp_source.html">fsm2.hpp</a> 第 <a class="el" href="../../d4/d64/fsm2_8hpp_source.html#l00383">383</a> 行定义.</p>

</div>
</div>
<a id="af9d73ab8811939d30c3cc95ba0b1223b" name="af9d73ab8811939d30c3cc95ba0b1223b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af9d73ab8811939d30c3cc95ba0b1223b">&#9670;&#160;</a></span>add() <span class="overload">[8/11]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename statType , typename dataType , typename realT  = typename std::decay&lt; dataType &gt;::type&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="#aa151bc878f6634b12d0e48329ed36815">emErrCode</a> <a class="el" href="../../d4/d5b/classwheels_1_1fsm2.html">wheels::fsm2</a>&lt; statType, dataType, realT &gt;::add </td>
          <td>(</td>
          <td class="paramtype">const statType &amp;</td>          <td class="paramname"><span class="paramname"><em>from</em></span>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const statType</td>          <td class="paramname"><span class="paramname"><em>to</em></span>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="#ac228e16d2c267a05f619c3ab31b944a2">enterFun_t</a></td>          <td class="paramname"><span class="paramname"><em>ent</em></span>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="#ae9a65cbfced3703367ae5a8a4cd2028e">leaveFun_t</a></td>          <td class="paramname"><span class="paramname"><em>leave</em></span>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="#a91085e365743f12172ad70b54c8c6a0f">raiseFun_t</a></td>          <td class="paramname"><span class="paramname"><em>raise</em></span>&#160;)</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p class="definition">在文件 <a class="el" href="../../d4/d64/fsm2_8hpp_source.html">fsm2.hpp</a> 第 <a class="el" href="../../d4/d64/fsm2_8hpp_source.html#l00502">502</a> 行定义.</p>

</div>
</div>
<a id="ac4403d6d645b27292fdaa932951e6107" name="ac4403d6d645b27292fdaa932951e6107"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac4403d6d645b27292fdaa932951e6107">&#9670;&#160;</a></span>add() <span class="overload">[9/11]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename statType , typename dataType , typename realT  = typename std::decay&lt; dataType &gt;::type&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="#aa151bc878f6634b12d0e48329ed36815">emErrCode</a> <a class="el" href="../../d4/d5b/classwheels_1_1fsm2.html">wheels::fsm2</a>&lt; statType, dataType, realT &gt;::add </td>
          <td>(</td>
          <td class="paramtype">const statType &amp;</td>          <td class="paramname"><span class="paramname"><em>stat</em></span>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="#ac228e16d2c267a05f619c3ab31b944a2">enterFun_t</a></td>          <td class="paramname"><span class="paramname"><em>ent</em></span>&#160;)</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>添加节点 </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramname">stat[</td><td>I ], 节点ID </td></tr>
    <tr><td class="paramname">ent[</td><td>I ], 当转换进入节点的时候触发的函数 </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>成功操作返回OK, 否则返回错误代码 </dd></dl>

<p class="definition">在文件 <a class="el" href="../../d4/d64/fsm2_8hpp_source.html">fsm2.hpp</a> 第 <a class="el" href="../../d4/d64/fsm2_8hpp_source.html#l00289">289</a> 行定义.</p>

</div>
</div>
<a id="aa6cc89141ebfac8a1e995c5ff8a544eb" name="aa6cc89141ebfac8a1e995c5ff8a544eb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa6cc89141ebfac8a1e995c5ff8a544eb">&#9670;&#160;</a></span>add() <span class="overload">[10/11]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename statType , typename dataType , typename realT  = typename std::decay&lt; dataType &gt;::type&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="#aa151bc878f6634b12d0e48329ed36815">emErrCode</a> <a class="el" href="../../d4/d5b/classwheels_1_1fsm2.html">wheels::fsm2</a>&lt; statType, dataType, realT &gt;::add </td>
          <td>(</td>
          <td class="paramtype">const statType &amp;</td>          <td class="paramname"><span class="paramname"><em>stat</em></span>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="#ac228e16d2c267a05f619c3ab31b944a2">enterFun_t</a></td>          <td class="paramname"><span class="paramname"><em>ent</em></span>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="#ae9a65cbfced3703367ae5a8a4cd2028e">leaveFun_t</a></td>          <td class="paramname"><span class="paramname"><em>leave</em></span>&#160;)</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>添加状态节点, 并指定进入回调和转出回调 </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramname">stat[</td><td>I ], </td></tr>
    <tr><td class="paramname">ent[</td><td>I ], </td></tr>
    <tr><td class="paramname">leave[</td><td>I ], </td></tr>
  </table>
  </dd>
</dl>

<p class="definition">在文件 <a class="el" href="../../d4/d64/fsm2_8hpp_source.html">fsm2.hpp</a> 第 <a class="el" href="../../d4/d64/fsm2_8hpp_source.html#l00325">325</a> 行定义.</p>

</div>
</div>
<a id="a2aea2dcb2a1ec39c3e37aa28c61ff65c" name="a2aea2dcb2a1ec39c3e37aa28c61ff65c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2aea2dcb2a1ec39c3e37aa28c61ff65c">&#9670;&#160;</a></span>add() <span class="overload">[11/11]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename statType , typename dataType , typename realT  = typename std::decay&lt; dataType &gt;::type&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="#aa151bc878f6634b12d0e48329ed36815">emErrCode</a> <a class="el" href="../../d4/d5b/classwheels_1_1fsm2.html">wheels::fsm2</a>&lt; statType, dataType, realT &gt;::add </td>
          <td>(</td>
          <td class="paramtype">const statType &amp;</td>          <td class="paramname"><span class="paramname"><em>stat</em></span>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="#ae9a65cbfced3703367ae5a8a4cd2028e">leaveFun_t</a></td>          <td class="paramname"><span class="paramname"><em>leave</em></span>&#160;)</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>添加节点，仅仅指定离开回调函数 </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramname">stat[</td><td>I ] </td></tr>
    <tr><td class="paramname">leave[</td><td>I ] return 成功操作返回OK， 否则返回false </td></tr>
  </table>
  </dd>
</dl>

<p class="definition">在文件 <a class="el" href="../../d4/d64/fsm2_8hpp_source.html">fsm2.hpp</a> 第 <a class="el" href="../../d4/d64/fsm2_8hpp_source.html#l00308">308</a> 行定义.</p>

</div>
</div>
<a id="af164f2e72ceaac8beb177f0a30335835" name="af164f2e72ceaac8beb177f0a30335835"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af164f2e72ceaac8beb177f0a30335835">&#9670;&#160;</a></span>clearRaw()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename statType , typename dataType , typename realT  = typename std::decay&lt; dataType &gt;::type&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="../../d4/d5b/classwheels_1_1fsm2.html">wheels::fsm2</a>&lt; statType, dataType, realT &gt;::clearRaw </td>
          <td>(</td>
          <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>清理缓存数据内容 </p>

<p class="definition">在文件 <a class="el" href="../../d4/d64/fsm2_8hpp_source.html">fsm2.hpp</a> 第 <a class="el" href="../../d4/d64/fsm2_8hpp_source.html#l00689">689</a> 行定义.</p>
<div class="dynheader">
这是这个函数的调用关系图:</div>
<div class="dyncontent">
<div class="center"><img src="../../d4/d5b/classwheels_1_1fsm2_af164f2e72ceaac8beb177f0a30335835_icgraph.png" border="0" usemap="#ad4/d5b/classwheels_1_1fsm2_af164f2e72ceaac8beb177f0a30335835_icgraph" alt=""/></div>
<map name="ad4/d5b/classwheels_1_1fsm2_af164f2e72ceaac8beb177f0a30335835_icgraph" id="ad4/d5b/classwheels_1_1fsm2_af164f2e72ceaac8beb177f0a30335835_icgraph">
<area shape="rect" title="清理缓存数据内容" alt="" coords="190,5,352,32"/>
<area shape="rect" href="../../d4/d5b/classwheels_1_1fsm2.html#a9d362b5f67ed56987c2690ab4c13feb8" title=" " alt="" coords="5,5,142,32"/>
<area shape="poly" title=" " alt="" coords="174,21,142,21,142,16,174,16"/>
</map>
</div>

</div>
</div>
<a id="ac6f34abf4145fffb259fbfee0954f93c" name="ac6f34abf4145fffb259fbfee0954f93c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac6f34abf4145fffb259fbfee0954f93c">&#9670;&#160;</a></span>eat()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename statType , typename dataType , typename realT  = typename std::decay&lt; dataType &gt;::type&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="#aa151bc878f6634b12d0e48329ed36815">emErrCode</a> <a class="el" href="../../d4/d5b/classwheels_1_1fsm2.html">wheels::fsm2</a>&lt; statType, dataType, realT &gt;::eat </td>
          <td>(</td>
          <td class="paramtype">const realT &amp;</td>          <td class="paramname"><span class="paramname"><em>data</em></span></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>接受数据执行状态转换 </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramname">接受到的数据</td><td></td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>成功操作返回0K，否则返回错误代码 </dd></dl>

<p class="definition">在文件 <a class="el" href="../../d4/d64/fsm2_8hpp_source.html">fsm2.hpp</a> 第 <a class="el" href="../../d4/d64/fsm2_8hpp_source.html#l00593">593</a> 行定义.</p>
<div class="dynheader">
函数调用图:</div>
<div class="dyncontent">
<div class="center"><img src="../../d4/d5b/classwheels_1_1fsm2_ac6f34abf4145fffb259fbfee0954f93c_cgraph.png" border="0" usemap="#ad4/d5b/classwheels_1_1fsm2_ac6f34abf4145fffb259fbfee0954f93c_cgraph" alt=""/></div>
<map name="ad4/d5b/classwheels_1_1fsm2_ac6f34abf4145fffb259fbfee0954f93c_cgraph" id="ad4/d5b/classwheels_1_1fsm2_ac6f34abf4145fffb259fbfee0954f93c_cgraph">
<area shape="rect" title="接受数据执行状态转换" alt="" coords="5,29,131,56"/>
<area shape="rect" href="../../d4/d5b/classwheels_1_1fsm2.html#a4291c65362cb83c146877c3ccdf957fa" title="强制转换状态到指定状态。虽然是强制转换，但是仍然要求两个状态之间存在转换路径。这个 可以用户旁路触发的情况" alt="" coords="179,29,341,56"/>
<area shape="poly" title=" " alt="" coords="131,40,163,40,163,45,131,45"/>
<area shape="poly" title=" " alt="" coords="227,30,221,21,225,11,238,5,260,3,283,5,295,12,292,16,281,10,260,8,240,10,229,15,227,20,232,27"/>
</map>
</div>

</div>
</div>
<a id="a9b329ab4fe0a84187648a61023639c39" name="a9b329ab4fe0a84187648a61023639c39"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9b329ab4fe0a84187648a61023639c39">&#9670;&#160;</a></span>errMsg()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename statType , typename dataType , typename realT  = typename std::decay&lt; dataType &gt;::type&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static std::string <a class="el" href="../../d4/d5b/classwheels_1_1fsm2.html">wheels::fsm2</a>&lt; statType, dataType, realT &gt;::errMsg </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="#aa151bc878f6634b12d0e48329ed36815">emErrCode</a></td>          <td class="paramname"><span class="paramname"><em>e</em></span></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>返回错误信息 </p>

<p class="definition">在文件 <a class="el" href="../../d4/d64/fsm2_8hpp_source.html">fsm2.hpp</a> 第 <a class="el" href="../../d4/d64/fsm2_8hpp_source.html#l00645">645</a> 行定义.</p>

</div>
</div>
<a id="a4b90fe5c88a6f14aa6edcc2277456cd4" name="a4b90fe5c88a6f14aa6edcc2277456cd4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4b90fe5c88a6f14aa6edcc2277456cd4">&#9670;&#160;</a></span>isRunning()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename statType , typename dataType , typename realT  = typename std::decay&lt; dataType &gt;::type&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="../../d4/d5b/classwheels_1_1fsm2.html">wheels::fsm2</a>&lt; statType, dataType, realT &gt;::isRunning </td>
          <td>(</td>
          <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>判断状态机是否正在运行 </p>
<dl class="section return"><dt>返回</dt><dd>正在运行返回true，否则返回false </dd></dl>

<p class="definition">在文件 <a class="el" href="../../d4/d64/fsm2_8hpp_source.html">fsm2.hpp</a> 第 <a class="el" href="../../d4/d64/fsm2_8hpp_source.html#l00551">551</a> 行定义.</p>

</div>
</div>
<a id="a17a3fbd2e98e7e7ee658992d1762fd56" name="a17a3fbd2e98e7e7ee658992d1762fd56"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a17a3fbd2e98e7e7ee658992d1762fd56">&#9670;&#160;</a></span>popRaw()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename statType , typename dataType , typename realT  = typename std::decay&lt; dataType &gt;::type&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="../../d4/d5b/classwheels_1_1fsm2.html">wheels::fsm2</a>&lt; statType, dataType, realT &gt;::popRaw </td>
          <td>(</td>
          <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>删除首元素 </p>

<p class="definition">在文件 <a class="el" href="../../d4/d64/fsm2_8hpp_source.html">fsm2.hpp</a> 第 <a class="el" href="../../d4/d64/fsm2_8hpp_source.html#l00695">695</a> 行定义.</p>

</div>
</div>
<a id="a9d362b5f67ed56987c2690ab4c13feb8" name="a9d362b5f67ed56987c2690ab4c13feb8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9d362b5f67ed56987c2690ab4c13feb8">&#9670;&#160;</a></span>reset()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename statType , typename dataType , typename realT  = typename std::decay&lt; dataType &gt;::type&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="../../d4/d5b/classwheels_1_1fsm2.html">wheels::fsm2</a>&lt; statType, dataType, realT &gt;::reset </td>
          <td>(</td>
          <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p class="definition">在文件 <a class="el" href="../../d4/d64/fsm2_8hpp_source.html">fsm2.hpp</a> 第 <a class="el" href="../../d4/d64/fsm2_8hpp_source.html#l00541">541</a> 行定义.</p>
<div class="dynheader">
函数调用图:</div>
<div class="dyncontent">
<div class="center"><img src="../../d4/d5b/classwheels_1_1fsm2_a9d362b5f67ed56987c2690ab4c13feb8_cgraph.png" border="0" usemap="#ad4/d5b/classwheels_1_1fsm2_a9d362b5f67ed56987c2690ab4c13feb8_cgraph" alt=""/></div>
<map name="ad4/d5b/classwheels_1_1fsm2_a9d362b5f67ed56987c2690ab4c13feb8_cgraph" id="ad4/d5b/classwheels_1_1fsm2_a9d362b5f67ed56987c2690ab4c13feb8_cgraph">
<area shape="rect" title=" " alt="" coords="5,31,142,57"/>
<area shape="rect" href="../../d4/d5b/classwheels_1_1fsm2.html#af164f2e72ceaac8beb177f0a30335835" title="清理缓存数据内容" alt="" coords="190,5,352,32"/>
<area shape="poly" title=" " alt="" coords="141,33,174,28,175,34,142,38"/>
<area shape="rect" href="../../d4/d5b/classwheels_1_1fsm2.html#a84be5fdd369b09a7c823062b2690d61d" title="启动执行.标记状态初始状态，如果初始状态包含了进入回调函数，则应该调用这个回调函数" alt="" coords="204,56,338,83"/>
<area shape="poly" title=" " alt="" coords="142,50,189,56,189,61,141,55"/>
<area shape="rect" href="../../d4/d5b/classwheels_1_1fsm2.html#a4291c65362cb83c146877c3ccdf957fa" title="强制转换状态到指定状态。虽然是强制转换，但是仍然要求两个状态之间存在转换路径。这个 可以用户旁路触发的情况" alt="" coords="400,56,562,83"/>
<area shape="poly" title=" " alt="" coords="338,67,385,67,385,72,338,72"/>
<area shape="poly" title=" " alt="" coords="446,57,439,47,444,38,458,31,481,29,506,32,520,38,517,43,505,37,481,35,459,37,447,41,444,47,450,54"/>
</map>
</div>

</div>
</div>
<a id="a07c994fd63d65016c1509ec1902d3c38" name="a07c994fd63d65016c1509ec1902d3c38"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a07c994fd63d65016c1509ec1902d3c38">&#9670;&#160;</a></span>setLeave()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename statType , typename dataType , typename realT  = typename std::decay&lt; dataType &gt;::type&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="#aa151bc878f6634b12d0e48329ed36815">emErrCode</a> <a class="el" href="../../d4/d5b/classwheels_1_1fsm2.html">wheels::fsm2</a>&lt; statType, dataType, realT &gt;::setLeave </td>
          <td>(</td>
          <td class="paramtype">const statType &amp;</td>          <td class="paramname"><span class="paramname"><em>id</em></span>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="#ae9a65cbfced3703367ae5a8a4cd2028e">leaveFun_t</a></td>          <td class="paramname"><span class="paramname"><em>fun</em></span>&#160;)</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>指定离开的回调函数 </p>

<p class="definition">在文件 <a class="el" href="../../d4/d64/fsm2_8hpp_source.html">fsm2.hpp</a> 第 <a class="el" href="../../d4/d64/fsm2_8hpp_source.html#l00676">676</a> 行定义.</p>

</div>
</div>
<a id="a84be5fdd369b09a7c823062b2690d61d" name="a84be5fdd369b09a7c823062b2690d61d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a84be5fdd369b09a7c823062b2690d61d">&#9670;&#160;</a></span>start()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename statType , typename dataType , typename realT  = typename std::decay&lt; dataType &gt;::type&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="../../d4/d5b/classwheels_1_1fsm2.html">wheels::fsm2</a>&lt; statType, dataType, realT &gt;::start </td>
          <td>(</td>
          <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>启动执行.标记状态初始状态，如果初始状态包含了进入回调函数，则应该调用这个回调函数 </p>

<p class="definition">在文件 <a class="el" href="../../d4/d64/fsm2_8hpp_source.html">fsm2.hpp</a> 第 <a class="el" href="../../d4/d64/fsm2_8hpp_source.html#l00520">520</a> 行定义.</p>
<div class="dynheader">
函数调用图:</div>
<div class="dyncontent">
<div class="center"><img src="../../d4/d5b/classwheels_1_1fsm2_a84be5fdd369b09a7c823062b2690d61d_cgraph.png" border="0" usemap="#ad4/d5b/classwheels_1_1fsm2_a84be5fdd369b09a7c823062b2690d61d_cgraph" alt=""/></div>
<map name="ad4/d5b/classwheels_1_1fsm2_a84be5fdd369b09a7c823062b2690d61d_cgraph" id="ad4/d5b/classwheels_1_1fsm2_a84be5fdd369b09a7c823062b2690d61d_cgraph">
<area shape="rect" title="启动执行.标记状态初始状态，如果初始状态包含了进入回调函数，则应该调用这个回调函数" alt="" coords="5,29,139,56"/>
<area shape="rect" href="../../d4/d5b/classwheels_1_1fsm2.html#a4291c65362cb83c146877c3ccdf957fa" title="强制转换状态到指定状态。虽然是强制转换，但是仍然要求两个状态之间存在转换路径。这个 可以用户旁路触发的情况" alt="" coords="187,29,349,56"/>
<area shape="poly" title=" " alt="" coords="139,40,171,40,171,45,139,45"/>
<area shape="poly" title=" " alt="" coords="234,30,229,21,233,11,246,5,268,3,291,5,304,12,301,16,290,10,268,8,247,10,236,15,234,20,239,27"/>
</map>
</div>
<div class="dynheader">
这是这个函数的调用关系图:</div>
<div class="dyncontent">
<div class="center"><img src="../../d4/d5b/classwheels_1_1fsm2_a84be5fdd369b09a7c823062b2690d61d_icgraph.png" border="0" usemap="#ad4/d5b/classwheels_1_1fsm2_a84be5fdd369b09a7c823062b2690d61d_icgraph" alt=""/></div>
<map name="ad4/d5b/classwheels_1_1fsm2_a84be5fdd369b09a7c823062b2690d61d_icgraph" id="ad4/d5b/classwheels_1_1fsm2_a84be5fdd369b09a7c823062b2690d61d_icgraph">
<area shape="rect" title="启动执行.标记状态初始状态，如果初始状态包含了进入回调函数，则应该调用这个回调函数" alt="" coords="190,81,323,108"/>
<area shape="rect" href="../../d4/d5b/classwheels_1_1fsm2.html#a982397accd0aaf3aaee87fd6b3248c22" title=" " alt="" coords="5,5,142,32"/>
<area shape="poly" title=" " alt="" coords="211,77,141,46,112,35,114,30,143,42,213,72"/>
<area shape="rect" href="../../d4/d5b/classwheels_1_1fsm2.html#a912a2c4483c2fa1340ba2a62049e696f" title="创建状态机对象。同时初始化相关回调函数" alt="" coords="5,56,142,83"/>
<area shape="poly" title=" " alt="" coords="174,86,141,81,142,76,175,81"/>
<area shape="rect" href="../../d4/d5b/classwheels_1_1fsm2.html#aa95915defa78358c2a1272647279af40" title=" " alt="" coords="5,107,142,133"/>
<area shape="poly" title=" " alt="" coords="175,109,142,113,141,108,174,103"/>
<area shape="rect" href="../../d4/d5b/classwheels_1_1fsm2.html#a9d362b5f67ed56987c2690ab4c13feb8" title=" " alt="" coords="5,157,142,184"/>
<area shape="poly" title=" " alt="" coords="213,117,143,148,114,159,112,154,141,143,211,112"/>
</map>
</div>

</div>
</div>
<a id="a4291c65362cb83c146877c3ccdf957fa" name="a4291c65362cb83c146877c3ccdf957fa"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4291c65362cb83c146877c3ccdf957fa">&#9670;&#160;</a></span>transform()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename statType , typename dataType , typename realT  = typename std::decay&lt; dataType &gt;::type&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="#aa151bc878f6634b12d0e48329ed36815">emErrCode</a> <a class="el" href="../../d4/d5b/classwheels_1_1fsm2.html">wheels::fsm2</a>&lt; statType, dataType, realT &gt;::transform </td>
          <td>(</td>
          <td class="paramtype">const statType &amp;</td>          <td class="paramname"><span class="paramname"><em>next</em></span></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>强制转换状态到指定状态。虽然是强制转换，但是仍然要求两个状态之间存在转换路径。这个 可以用户旁路触发的情况 </p>

<p class="definition">在文件 <a class="el" href="../../d4/d64/fsm2_8hpp_source.html">fsm2.hpp</a> 第 <a class="el" href="../../d4/d64/fsm2_8hpp_source.html#l00558">558</a> 行定义.</p>
<div class="dynheader">
函数调用图:</div>
<div class="dyncontent">
<div class="center"><img src="../../d4/d5b/classwheels_1_1fsm2_a4291c65362cb83c146877c3ccdf957fa_cgraph.png" border="0" usemap="#ad4/d5b/classwheels_1_1fsm2_a4291c65362cb83c146877c3ccdf957fa_cgraph" alt=""/></div>
<map name="ad4/d5b/classwheels_1_1fsm2_a4291c65362cb83c146877c3ccdf957fa_cgraph" id="ad4/d5b/classwheels_1_1fsm2_a4291c65362cb83c146877c3ccdf957fa_cgraph">
<area shape="rect" title="强制转换状态到指定状态。虽然是强制转换，但是仍然要求两个状态之间存在转换路径。这个 可以用户旁路触发的情况" alt="" coords="5,29,168,56"/>
<area shape="poly" title=" " alt="" coords="58,30,53,21,57,11,68,5,87,3,106,5,117,12,114,16,104,10,86,8,70,10,61,15,59,20,63,28"/>
</map>
</div>
<div class="dynheader">
这是这个函数的调用关系图:</div>
<div class="dyncontent">
<div class="center"><img src="../../d4/d5b/classwheels_1_1fsm2_a4291c65362cb83c146877c3ccdf957fa_icgraph.png" border="0" usemap="#ad4/d5b/classwheels_1_1fsm2_a4291c65362cb83c146877c3ccdf957fa_icgraph" alt=""/></div>
<map name="ad4/d5b/classwheels_1_1fsm2_a4291c65362cb83c146877c3ccdf957fa_icgraph" id="ad4/d5b/classwheels_1_1fsm2_a4291c65362cb83c146877c3ccdf957fa_icgraph">
<area shape="rect" title="强制转换状态到指定状态。虽然是强制转换，但是仍然要求两个状态之间存在转换路径。这个 可以用户旁路触发的情况" alt="" coords="371,56,533,83"/>
<area shape="poly" title=" " alt="" coords="486,43,474,37,452,35,432,37,421,41,418,47,423,54,419,57,413,47,417,38,430,31,452,29,476,32,488,38"/>
<area shape="rect" href="../../d4/d5b/classwheels_1_1fsm2.html#ac6f34abf4145fffb259fbfee0954f93c" title="接受数据执行状态转换" alt="" coords="194,31,319,57"/>
<area shape="poly" title=" " alt="" coords="355,59,319,55,319,49,356,54"/>
<area shape="rect" href="../../d4/d5b/classwheels_1_1fsm2.html#a84be5fdd369b09a7c823062b2690d61d" title="启动执行.标记状态初始状态，如果初始状态包含了进入回调函数，则应该调用这个回调函数" alt="" coords="190,81,323,108"/>
<area shape="poly" title=" " alt="" coords="356,84,324,89,323,83,355,79"/>
<area shape="rect" href="../../d4/d5b/classwheels_1_1fsm2.html#a982397accd0aaf3aaee87fd6b3248c22" title=" " alt="" coords="5,5,142,32"/>
<area shape="poly" title=" " alt="" coords="202,77,189,72,141,46,113,35,115,30,143,42,191,67,204,73"/>
<area shape="rect" href="../../d4/d5b/classwheels_1_1fsm2.html#a912a2c4483c2fa1340ba2a62049e696f" title="创建状态机对象。同时初始化相关回调函数" alt="" coords="5,56,142,83"/>
<area shape="poly" title=" " alt="" coords="174,86,141,81,142,76,175,81"/>
<area shape="rect" href="../../d4/d5b/classwheels_1_1fsm2.html#aa95915defa78358c2a1272647279af40" title=" " alt="" coords="5,107,142,133"/>
<area shape="poly" title=" " alt="" coords="175,109,142,113,141,108,174,103"/>
<area shape="rect" href="../../d4/d5b/classwheels_1_1fsm2.html#a9d362b5f67ed56987c2690ab4c13feb8" title=" " alt="" coords="5,157,142,184"/>
<area shape="poly" title=" " alt="" coords="213,117,143,148,114,159,112,154,141,143,211,112"/>
</map>
</div>

</div>
</div>
<hr/>该类的文档由以下文件生成:<ul>
<li>include/<a class="el" href="../../d4/d64/fsm2_8hpp_source.html">fsm2.hpp</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
制作者&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.11.0
</small></address>
</div><!-- doc-content -->
</body>
</html>
